package com.源码分析.window;

import java.util.List;

import org.junit.Test;

import reactor.core.publisher.Flux;

// 类似buffer，不同的是，window操作符是把当前流中的元素收集到另外一个Flux序列中（是因为中间的UnicastProcessor），返回只类型是Flux<Flux<T>>
public class WindowDemo {

	@Test
	public void demo1() {
		Flux<List<String>> flux = Flux.just("ALPHA", "#", "BETA", "FFF", "#", "#")
		    .window(2)
		    .flatMap(Flux::collectList);

		// 如果没有flatMap，则这里slist就是一个Flux，数据都在该Flux的队列中
		flux.subscribe(slist -> {
			for (String s : slist) {
				System.out.print(s + ", ");
			}
			System.out.println("---------------");
		});
	}

}
